package {{package}};

import {{package}}.*;
import {{modelPackage}}.*;
{{#imports}}import {{import}};
{{/imports}}
import java.util.List;
import javax.validation.Valid;
import io.swagger.annotations.ApiParam;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import static org.springframework.http.MediaType.*;
{{#operations}}
{{>generatedAnnotation}}
@FeignClient(name="{{title}}", contextId="{{classname}}FeignClient")
public interface {{classname}}FeignClient extends {{classname}}{

    {{#operation}}
    /**
     * {{{summary}}}{{#allParams}}
     * @param {{paramName}} {{#description}}{{description}}{{/description}}{{^description}}{{paramName}}{{/description}}{{/allParams}}
     * @return {{#returnType}}{{returnType}}{{/returnType}}Response
     */
    @RequestMapping(value = "{{basePathWithoutHost}}{{path}}", {{#hasProduces}}
        produces = { {{#produces}}"{{mediaType}}"{{#hasMore}},{{/hasMore}}{{/produces}} }, {{/hasProduces}}{{#hasConsumes}}
        consumes = { {{#consumes}}"{{mediaType}}"{{#hasMore}}, {{/hasMore}}{{/consumes}} },{{/hasConsumes}}
    method = RequestMethod.{{httpMethod}})
    @Override
    public {{#returnType}}{{{returnType}}}Response{{/returnType}}{{^returnType}}cn.featherfly.common.api.Response{{/returnType}} {{nickname}}({{#allParams}}
        {{>queryParams}}{{>pathParams}}{{>headerParams}}{{>bodyParams}}{{>formParams}}{{>requestParams}}{{#hasMore}},{{/hasMore}}{{/allParams}});

    {{/operation}}
}
{{/operations}}
